package com.bitc.crash.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("order")
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 订单号
     */
    @TableField("order_no")
    private String orderNo;

    /**
     * 取餐码
     */
    @TableField("pickup_code")
    private String pickupCode;

    /**
     * 用户ID（可为空，支持游客下单）
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 用户手机号
     */
    @TableField("user_phone")
    private String userPhone;

    /**
     * 订单商品详情JSON
     */
    @TableField("order_items")
    private String orderItems;

    /**
     * 商品总价
     */
    @TableField("total_price")
    private BigDecimal totalPrice;

    /**
     * 优惠金额
     */
    @TableField("discount_amount")
    private BigDecimal discountAmount;

    /**
     * 实际支付金额
     */
    @TableField("actual_amount")
    private BigDecimal actualAmount;

    /**
     * 支付方式：1-现金，2-微信，3-支付宝
     */
    @TableField("payment_method")
    private Integer paymentMethod;

    /**
     * 支付状态：0-待支付，1-支付中，2-已支付，3-支付失败，4-已退款
     */
    @TableField("payment_status")
    private Integer paymentStatus;

    /**
     * 第三方支付交易号
     */
    @TableField("transaction_id")
    private String transactionId;

    /**
     * 订单状态：0-草稿，1-待支付，2-已支付，3-出品中，4-待取餐，5-已完成，6-已取消，7-已退款
     */
    @TableField("order_status")
    private Integer orderStatus;

    /**
     * 出品状态：0-待分单，1-待制作，2-制作中，3-待取餐，4-已完成，5-已作废
     */
    @TableField("production_status")
    private Integer productionStatus;

    /**
     * 订单备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 支付时间
     */
    @TableField("payment_time")
    private LocalDateTime paymentTime;

    /**
     * 完成时间
     */
    @TableField("finish_time")
    private LocalDateTime finishTime;

    /**
     * 取消时间
     */
    @TableField("cancel_time")
    private LocalDateTime cancelTime;

    /**
     * 退款时间
     */
    @TableField("refund_time")
    private LocalDateTime refundTime;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 是否删除：0-未删除，1-已删除
     */
    @TableLogic
    @TableField("is_delete")
    private Integer isDelete;
} 